home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 451-475 / disk_466 / dice / version.doc < prev    next >
Text File  |  1992-05-06  |  13KB  |  337 lines

  1.  
  2.                    VERSION.DOC
  3.                   DICE
  4.  
  5. VERS DES COMMENT
  6.     VERS    = Release Version
  7.     DES     = bug fixed / feature designator
  8.     XB  - major bug fixed in main compiler
  9.           (use of routine in question could have caused a crash)
  10.     B   - minor bug fixed in main compiler
  11.     F   - feature added
  12.     O   - optimization added
  13.  
  14.     ADD - feature added or fixed that is standard C but was not previously
  15.           implemented or working.
  16.  
  17.     XBL - major bug fixed to library
  18.     BL  - minor bug fixed to library
  19.     FL  - feature added to library
  20.     OL  - optimization added to library
  21.  
  22.     XBA - major bug fixed in support program (i.e. not DCC or sub programs)
  23.     BA  - minor bug fixed in support program
  24.     FA  - feature added to support program (or new support program)
  25.     OA  - optimization added to support program
  26.  
  27.     COMMENT = comment or bug, feature
  28.  
  29. 2.05.15
  30.     F    BASIC REGISTERED ARGUMENTS ADDED.  See -mr, -mR, and -mRR options
  31.  
  32.     F    prototype optimization.  If a prototype says a procedure takes a
  33.     short, then DICE pushes a long (as usual).  However, DICE will
  34.     no longer EXT the object before pushing it (upper word is garbage).
  35.     This works because the procedure, having declared the argument a
  36.     short, will only access the lower 16 bits.
  37.  
  38. 2.05.14
  39.     B    fgets() would overflow the buffer by one character when input lines
  40.     were larger than the buffer size.
  41.  
  42.     B    DCC would complain about output (-o) files ending in .h or .c when
  43.     they do not actually end in .h or .c ..
  44.  
  45. 2.05.13
  46.     B    DCC was supplying only a 2K stack to NON-RESIDENTED sub programs.
  47.     Oops.
  48.  
  49.     F    New floating point support for MATHIEEESING*.LIBRARY ... single
  50.     precision IEEE library.  This is now the default since it is
  51.     more compatible with the double precision IEEE library for
  52.     conversions between single & double precision.
  53.  
  54.     Use the -ffp option to DCC to use the old motorola fast floating
  55.     point single precision library.  Note that the new ieee single
  56.     precision library may not exist on every computer.
  57.  
  58. 2.05.12
  59.     B    another bug with 'const static' items not properly aligning the
  60.     routine they were declared in (when declared within a procedure
  61.     definition).  Fixed.
  62.  
  63.     B    pfmt has a local 64 byte buffer which used to be static.  This is
  64.     illegal for the ROM.LIB version of sprintf() & vsprintf() and so I
  65.     have made this an auto instead.  This fix does not effect Amiga C
  66.     programming though it does mean that [v]sprintf() may now be called
  67.     out of context or multi-threaded without mishap.
  68.  
  69.     F    qsort(), rand(), and srand() have been written.
  70.  
  71.     B    volatile was not being handled proper, 'volatile char *ptr' is
  72.     a pointer to a volatile char, NOT a volatile pointer, for
  73.     example.
  74.  
  75. 2.05.11
  76.     F    new library, ROM.LIB, contains only those routines from C.LIB that
  77.     are completely self contained (reference no static or global data,
  78.     or other routines.  Use only autos if at all).
  79.  
  80.     This library is included instead of C.LIB when the -rom option
  81.     to DCC is used (with the -rom option, amigas*.lib is not included
  82.     either, and it is up to the programmer to specify his own startup
  83.     module)
  84.  
  85.     F    char ary[0] and empty structs return errors, but a direct 'void'
  86.     declaration is allowed.  i.e. 'void x;', useful in some cases.
  87.  
  88.     F    Specifying the 'register' keyword now adds some 'weight' to the
  89.     variable, perhaps giving it more of a chance of becomming a
  90.     register.
  91.  
  92.     B    DCPP was improperly handling token pasting (##), this has been
  93.     fixed.
  94.  
  95.     B    static const objects declared within a procedure not word-aligned
  96.     could cause the procedure code to not be word-aligned, thus
  97.     causing a software error.
  98.  
  99.     F    CONST object handling has been changed.  Before 2.05.11 const
  100.     objects were not put into a CODE hunk unless the -ms or -mS options
  101.     are given to DCC.  2.05.11 and beyond put const qualified objects
  102.     in a code hunk regardless.
  103.  
  104.     F    C.O Modified.  Any program run in the background with RUN will not
  105.     attempt to Open("*",..) to get the stderr channel but instead
  106.     will use the stdout descriptor if it exists.  This allows programs
  107.     to be detached from a CLI (i.e. that you can run a program and
  108.     then close the CLI window without mishap)
  109.  
  110.     F    -020, -030, -881, -882 options formally added (currently -020/-030
  111.     are the same and -881/-882 are the same)
  112.  
  113.     -020: uses EXTB.L   (no major support has been added yet)
  114.  
  115.     B    DSEARCH had a bug... when multiple files are scanned it would miss
  116.     lines in the second file and beyond!
  117.  
  118.     F    oops, const items in the library were not placed in the code
  119.     section.  This effects <ctype.h> ... you must recompile any
  120.     source files that use <ctype.h> macros since the access method
  121.     is now pc-relative instead of data-relative.
  122.  
  123.     The fix is more pertainent to ROMd applications that use <ctype.h>
  124.     ... the lookup tables are no longer copied into RAM for such
  125.     applications.
  126.  
  127. 2.05.10
  128.     F    __config and __shared type qualifiers added
  129.  
  130.     B    --var; generated an internal error
  131.  
  132. 2.05.09
  133.     B    switch() did not generate proper code when default: label was not
  134.     placed last and fell through to another case, or a case before
  135.     the default fell through to it when default: was not placed last.
  136.  
  137.     B    comma operator bug fixed (would cause fatal internal error in
  138.     some cases)
  139.  
  140.     B    a[i] = a[j] = a[k] ... = x; ran out of registers if too many
  141.     assignments.  This has been fixed.
  142.  
  143. 2.05.08
  144.     B    fixed random-memory-read bug in DLink (did not effect linking, but
  145.     would sometimes read the custom-chip area causing screen glitches
  146.     and other mishaps). (dlink .02)
  147.  
  148.     BL    access() fixed, returns true if checking for existance on an
  149.     object which is currently locked exclusively by somebody else.
  150.  
  151.     B    DICE would give a prototype argument mismatch warning when the
  152.     proto says array-of and the declaration says pointer-to, when
  153.     for function args these mean the same thing.  This has been fixed.
  154.  
  155.     B    DICE now checks for duplicate case statements
  156.  
  157.     B    error in indexed structure copies, struct foo AR[16][16];
  158.     foo[i][j] = foo[k][l]; fixed (would give fatal error message before).
  159.  
  160.     XB    MAJOR fix to type qualifiers.. __far, __near, __chip, __aligned,
  161.     etc... all work properly now when specified in complex objects
  162.     (e.g. arrays)
  163.  
  164.     B    global initialization that assigns the address of an array was
  165.     broken (would give fatal error message).  Now fixed.
  166.  
  167.     XB    bug fixed when casts of pointer constants occured,
  168.     short = *(long *)0x0  improperly read the word at location 0, it
  169.     should have read the word at location 2!.
  170.  
  171.     F    -ms, -mS, -ms0 options added (placement of const data), see DCC.DOC.
  172.     THIS IS A GREAT OPTION (-ms) WHEN USED ALONG WITH -r !
  173.  
  174.     -SD -SB added to DC1 (proly not useful to anybody)
  175.  
  176.     __far declared data is now placed in a different section, allowing
  177.     the small-data model to be used when more than 64K of data
  178.     exists without fancy rearrangement of junk.
  179.  
  180.     F    DICE is now able to generate ROMable code via new options and
  181.     utilities, with full support for r/w initialized data items and use
  182.     of the absolute.W addressing mode instead of the small-data model.
  183.  
  184.     B    array of const now properly becomes a const array of const.
  185.  
  186.     B    volatile auto storage no longer put in registers (refer to setjmp
  187.     manual page)
  188.  
  189.     O    DICE executables take somewhat less run-time memory due to
  190.     being compiled with the -ms option, especially when multiple
  191.     instances are running simultaniously.
  192.  
  193.     O    new options added to DOBJ (-nc and -nd to show symbols only)
  194.  
  195.     F    better code for large switches (binary subdivision method, aprox
  196.     4x speed increase for large switches)
  197.  
  198.     B    switch() did not generate proper code when the overall switch
  199.     range is larger than 0x7FFFFFFF (i.e. highest - lowest)
  200.  
  201.  
  202. 2.05.07
  203.     F    -proto option added ... generates an error for any function call
  204.      that does not have a prototype
  205.  
  206.     B    struct foo *y = &x[0]; where sizeof(struct foo) not a power of 2 (x
  207.     is an array of foo) in global or static declaration would cause
  208.     fatal error.  Fixed.
  209.  
  210.     B    Various fixes to the preprocessor
  211.  
  212. 2.05.06
  213.     ADD DAS now supports all 68000 opcodes
  214.     B    trigraph sequences now supported (??x)
  215.     B    minor bug in assembler that generated an infinite length object file
  216.     (due to a specific error condition) fixed, now exits gracefully.
  217.     F    DOBJ now part of registered distribution (object code disassembler)
  218.     B    forgot to include DME.DOC !
  219.  
  220.     B    STDDEF.H changed, the offsetof() macro no longer prefixes the type
  221.     with the 'struct' keyword.
  222.  
  223.     B    complex procedural types now work. e.g.
  224.             extern void (*signal(int, void (*)(int)))(int);
  225.  
  226.     ADD cpp #line directive (supports yacc generated source files)
  227.  
  228. 2.05 RELEASE (REG UPDATE #2)
  229.     (DC1 2.05.05)
  230.     B    small bug (caught by assembler).  int a[4];     (a-2)[c] = 0;
  231.     would cause bad assembly to be output.
  232.  
  233.     B    now reports error for exp.field where exp is not a structure.
  234.  
  235.     (CPP 2.05.04)
  236.     B    cpp not counting lines right (generates error reports
  237.     specifying the wrong line number)
  238.  
  239. 2.05 RELEASE DC1 2.05.04 (REG UPDATE #1)
  240.     XB        array indexing not of a power of 2 (i.e. req's multiply)
  241.         destroyed temporaries in scratch registered.
  242.  
  243. 2.05 RELEASE (REG RELEASE)
  244.     ADD     prototypeing works properly now.
  245.  
  246.     BL        gets would not return last line of file if last line did not
  247.         terminate with a newline.
  248.  
  249.     BL        fgets would not return last line of file if last line did not
  250.         terminate with a newline.  Also, fgets did not return a pointer
  251.         to the base of the passed buffer for valid lines
  252.  
  253.     B        compiler used to allow unbalanced parenthesis... this has been
  254.         fixed.  i.e. return(10;  reports an error as it should.
  255.  
  256.     B        bugs in the preprocessor fixed having to do with macro recursion
  257.  
  258. 2.04
  259.     XBL     strftime() did not \0 terminate the buffer in all cases
  260.  
  261.     BA        libtos() would not modify PotgoBase into the small-data model
  262.  
  263.     B        DC1 would generate lea An,An which is an illegal instruction.
  264.         This is caught and reported by DAS.
  265.  
  266.     B        DC1 would generate a move.0 (caught by assembler) when passing
  267.         an argument to a prototyped function using the array declaration
  268.         form instead of a pointer form, i.e. foo(char buf[], int y, ...);
  269.  
  270.     O        MULS/MULU optimizations added (long = short * short)
  271.  
  272.     O        ptr - ptr operation: ASR now used when possible instead of a
  273.         long divide.
  274.  
  275.     F        linker now supports qualified hunks (e.g. CHIP ram hunks, etc...)
  276.  
  277.     ADD     partially implemented # (string-ize) and ## (token pasting)
  278.         operators in preprocessor.    Fixed a macro bug in preprocessor
  279.         (that used to generate an error message).
  280.  
  281.     BL        [s/f]scanf() improperly included %*<spec> objects in the
  282.         returned count.  This has been fixed.
  283.  
  284.     O        More small optimizations added that now result in at least a
  285.         2-3% improvement in code size.  Amoung other things,
  286.         moveq+swap used to load large integer values when possible and
  287.         clr.l -(sp) is used instead of pea 0.W .
  288.  
  289.     XB        WORKBENCH SUPPORT FIXED.  Previously the exit code would return
  290.         the workbench message and then proceed to make additional calls
  291.         that could break the Forbid(), thus causing the workbench to
  292.         unload the segment before the code has completed execution.
  293.  
  294.         _WBMsg, if non-NULL, is now returned just after a Forbid() and
  295.         just before the final register restore/rts of the program.
  296.  
  297.     ------  REGISTERED RELEASE ($40 shareware fee) ------
  298.  
  299.     ADD     Floating point for float's and double's has been implemented
  300.         but some deficiencies (such as not all library routines have
  301.         been implemented) still exist.  Compile time constant fp
  302.         operations are done in 128-bit mantissa format using a base 10
  303.         exponent (i.e. no base conversion error factors).
  304.  
  305.     F        __near, __far, and __chip keywords have been implemented.  Note
  306.         however that programs containing __far and __chip keywords may
  307.         not be made resident.
  308.  
  309.     ADD     bitfields have been added and should now work in most cases.
  310.         Comparisons of bitfields only work in the == 0 and != 0
  311.         cases (this includes if (bitfield) and if (!bitfield)
  312.         constructions).
  313.  
  314.         Bitfields are word aligned and packed into words (16 bits),
  315.         though a bit field itself may be up to 32 bits in size.  Some
  316.         optimizations have been implemented.
  317.  
  318.  
  319. 2.03    Internal Intermediate Version
  320.  
  321. 2.02
  322.     BL        open() was broken in 2.01, causing fopen(..., "w") to not
  323.         truncate the file.    Dumb Dumb Dumb.
  324.  
  325. 2.01
  326.     BL        fflush() and fopen() were broken... file position was not
  327.  
  328.     XBL     Fixed var-args bug ... va_arg was not indirecting the
  329.         quantity but returned a pointer instead.  pfmt and sfmt
  330.         had to be changed.
  331.  
  332. 2.00
  333.  
  334.     --        Initial shareware release
  335.  
  336.  
  337.